'use strict';

/**
 * 这里的mainCtrl要与定义的路由名字一样
 * 
 * $q延迟加载对象,解决异步问题
 */
angular.module('app').controller('positionCtrl',['$q', '$http' , '$state' , '$scope', 'cache','$log', function ($q, $http, $state, $scope, cache, $log) {
    /**
     * !!强行转成boolean型
     * @type {boolean}
     */
    $scope.isLogin = !!cache.get('name');

    $scope.message = $scope.isLogin ? '投个简历' : '去登录';

    /**
     * 获取职位详情
     * @returns {Promise}
     */
    function getPosition() {
        var def = $q.defer();// 创建延迟加载对象

        $http.get('data/position.json',{
            params: {
                id : $state.params.id
            }
        }).success(function (resp) {
            $scope.position = resp;

            if(resp.posted){
                $scope.message = '已投递';
            }

            def.resolve(resp);// 把需要传入的参数传入
        }).error(function (err) {
            def.reject(err);
        });

        return def.promise;//返回延迟对象
        // 以上写法最优
        // $http.get('data/position.json?id=' + $state.params.id).success(function (resp) {
        //     $scope.position = resp;
        //     def.resolve(resp);
        // }).error(function (err) {
        //     def.reject(err);
        // });
    }
    function getCompany(id) {
        $http.get('data/company.json?id=' + id).success(function (resp) {
            $scope.company = resp;
        })
    }

    /**
     * 有先后顺序
     * 根据职位信息的id，获取公司信息
     */
    getPosition().then(function (obj) {
        getCompany(obj.companyId);
    });

    /**
     * 当两个操作都执行完在操作
     */
    // $q.all([fun1(),fun2()].then(function (result) {
    //
    // }));

    /**
     * 判断是否登录
     *
     * $log.info  Angularjs自带的日志
     */
    $scope.go = function () {
        if($scope.message !== '已投递'){
            if($scope.isLogin){
                $http.post('data/handle.json',{
                    id:$scope.position.id
                }).success(function (resp) {
                    $log.info(resp);
                    /* 把二元运算符修改成三元运算符 */
                    $scope.message = '已投递';
                });
            }else{
                $state.go('login');
            }
        }
    }
}]);




